Computer systems can include memory such as random access memory (RAM) to execute programs and to facilitate data transfer from and to input/output (I/O) devices. A program can include load and store instructions to read data from memory and to write data to memory. Some systems include a memory controller to handle memory requests from one or more sources such as a central processing unit (CPU), direct memory access (DMA), hardware accelerator (HAC), or digital signal processor (DSP). Some systems include one or more caches in order to speed-up memory access. If a cache does not have the requested data, a system can access data from main memory. Main memory can include multiple banks.